%{
#include "programext.tab.h"
#include "string.h"
%}

%%
[ \t\n] ;    /* ignore whitespace */
\+       { return yytext[0]; }
\-       { return yytext[0]; }
\*       { return yytext[0]; }
\(       { return yytext[0]; }
\)       { return yytext[0]; }
\;       { return yytext[0]; }
\,       { return yytext[0]; }
\[       { return yytext[0]; }
\]       { return yytext[0]; }
\|\|     { return CONCATOP; }
:=       { return ASSIGNOP; }
define   { return DEFINE; }
if       { return IF; }
then     { return THEN; }
else     { return ELSE; }
fi       { return FI; }
while    { return WHILE; }
do       { return DO; }
od       { return OD; }
proc     { return PROC; }
end      { return END; }
cons     { return CONS; }
car    	 { return CAR; }
cdr      { return CDR; }
nullp	 { return NULLP; }
listp    { return LISTP; }
intp     { return INTP; }



[a-zA-Z]+   { yylval.ident = strdup(yytext);  return IDENT; }
[0-9]+   { yylval.value = atoi(yytext); return NUMBER; }
.    return yytext[0];
%%
